// 2. 主题接口
/// <summary>
/// 主题接口，定义了注册观察者、移除观察者和通知所有观察者的方法
/// 这是观察者模式中的被观察者接口，所有能够被观察的对象都必须实现此接口
/// </summary>
public interface ISubject
{
  /// <summary>
  /// 注册一个新的观察者到观察者列表中
  /// </summary>
  /// <param name="observer">要注册的观察者对象</param>
  void RegisterObserver(IObserver observer);
  
  /// <summary>
  /// 从观察者列表中移除指定的观察者
  /// </summary>
  /// <param name="observer">要移除的观察者对象</param>
  void RemoveObserver(IObserver observer);
  
  /// <summary>
  /// 当主题状态发生变化时，通知所有已注册的观察者
  /// </summary>
  void NotifyObservers();
}